package nl.haemers.collections.interfaces 
{
	import nl.haemers.collections.interfaces.ICollection;
	/**
	 * ...
	 * @author Jonathan Haemers
	 */
	public interface IQueue extends ICollection
	{
		/**
		 * Returns the head of the queue.
		 * @return
		 */
		function element() : Object;
		
		/**
		 * Inserts the element into the queue.
		 * @param	e
		 * @return
		 */
		function offer(e:Object) : Boolean;
		
		/**
		 * Returns the head of the queue, or null when the queue is empty.
		 * @return
		 */
		function peek() : Object;
		
		/**
		 * Returns and removes the head of the queue, or null if the queue is empty.
		 * @return
		 */
		function poll() : Object;
	}
	
}